06 - 开源实现横评
前置:02 到 05 篇的机制。本篇把这些机制落到具体项目上。
本篇回答:这十五个项目分别是什么形态、要拖多少外部依赖、以及在你按印象去选之前,有哪四件事已经变了。
全部数据 gh api 实测于 2026-08-26,许可证逐个打开许可证文件读,依赖从 pyproject.toml / package.json 实读。
一、四个选型陷阱
这三条不是"细节差异",是按旧印象动手会直接白花几天的断点。
pyproject.toml 或 package.json 看核心能力还在不在依赖里,而不是读 README 的功能列表。第三条可以直接验证:
# v1.0.0 里有 graph_store
curl -s https://raw.githubusercontent.com/mem0ai/mem0/v1.0.0/mem0/configs/base.py | grep -n graph_store
# 47: graph_store: GraphStoreConfig = Field(
# v2.0.0 里没有了
curl -s https://raw.githubusercontent.com/mem0ai/mem0/v2.0.0/mem0/configs/base.py | grep -n graph_store
# (无输出)
主分支 MemoryConfig 现在的全部字段是:vector_store / llm / embedder / history_db_path / reranker / version / custom_instructions。仓库里的 examples/graph-db-demo/ 还留着 Neo4j、Memgraph、Kuzu、Neptune 四个 notebook,但它们对应的已经不是当前开源包的能力。
1.1 第四条:阿里的 MemoryScope 改名迁仓了
modelscope/MemoryScope 现在 301 跳转到 agentscope-ai/ReMe,PyPI 包名也从 memoryscope 换成了 reme-ai(0.4.1.7)。旧仓库名在新 README 里被保留成一个历史分支 memoryscope_branch。
跳转是通的,所以这条不会让代码立刻挂掉 —— 它坑在搜索结果和二手资料:按 MemoryScope 搜到的教程,讲的是一个此后又改过两轮设计的版本。
二、十五个项目的基础事实
| 项目 | ★ | 许可证(实读) | 语言 | 最新版本 | 最近提交 |
|---|---|---|---|---|---|
mem0ai/mem0 | 64,075 | Apache-2.0 | Python | mem0ai 2.0.19(2026-08-24) | 2026-08-25 |
volcengine/OpenViking | 33,440 | AGPL-3.0(crates/ov_cli 与 examples 为 Apache-2.0) | Rust + Python | — | 2026-08-26 |
getzep/graphiti | 30,319 | Apache-2.0 | Python | graphiti-core 0.29.3(2026-07-27) | 2026-08-21 |
topoteretes/cognee | 30,268 | Apache-2.0 | Python | cognee 1.5.3(2026-08-23) | 2026-08-26 |
supermemoryai/supermemory | 29,074 | MIT | TypeScript | — | 2026-08-26 |
TencentCloud/TencentDB-Agent-Memory | 24,556 | MIT(gh 判 NOASSERTION) | TypeScript | — | 2026-08-26 |
memvid/memvid | 16,448 | Apache-2.0 | Rust | — | 2026-07-14 |
MemoriLabs/Memori | 16,224 | Apache-2.0(gh 判 NOASSERTION) | Python | memorisdk 3.2.8(2026-04-13) | 2026-08-21 |
NevaMind-AI/memU | 14,347 | Apache-2.0(文件名是 LICENSE.txt) | Python | — | 2026-08-26 |
EverMind-AI/EverOS | 12,438 | Apache-2.0 | Python | — | 2026-08-26 |
MemTensor/MemOS | 10,996 | Apache-2.0 | TypeScript | — | 2026-08-26 |
plastic-labs/honcho | 6,844 | AGPL-3.0 | Python | honcho-ai 2.3.0(2026-08-11) | 2026-08-25 |
agentscope-ai/ReMe | 3,354 | Apache-2.0 | Python | reme-ai 0.4.1.7(2026-08-13) | 2026-08-26 |
letta-ai/letta-code | 3,122 | Apache-2.0 | TypeScript | — | 2026-08-26 |
langchain-ai/langmem | 1,626 | MIT | Python | langmem 0.0.30(2025-10-27) | 2026-08-11 |
另外两个经常被列进候选、但值得先看一眼时间的:
| 项目 | ★ | 最近提交 | 说明 |
|---|---|---|---|
memodb-io/memobase | 2,858 | 2026-01-11 | 用户画像式记忆(Profile 形态)。已停更七个多月 |
BAI-LAB/MemoryOS | 1,560 | 2026-07-07 | EMNLP 2025 Oral 的配套实现,学术出身,工程完备度低于上表 |
2.1 许可证:两行需要过法务
十五个里十三个是 Apache-2.0 或 MIT,两个是 AGPL-3.0:volcengine/OpenViking 和 plastic-labs/honcho。
AGPL 的传染性触发条件和 GPL 不同:通过网络把它作为服务提供给用户,就构成"分发",要求提供完整对应源码。记忆层恰恰几乎总是以服务形态部署 —— 这不是理论风险。
两者的处境还不一样:
- OpenViking 的 star 数是这批里第二高(33,440),且 README 明确写了开源版不阉割、可以自己在生产跑。也就是说它很可能被选中,而选中它的团队里有多少人注意到许可证是 AGPL,是个真实的问题。注意它的许可证是分件的:主项目 AGPLv3,
crates/ov_cli和examples两处单独是 Apache-2.0 - honcho 建仓最早(2023-09-10),成熟度不低,但体量小得多
两个都不能按"反正是开源的"处理,选之前先过法务。
另外两行 gh 判不出许可证的(腾讯、Memori)是虚惊:许可证文件开头各自加了一段自己的声明,正文分别是标准 MIT 和 Apache-2.0,实读即可确认。
2.2 停更与错位
LangMem 那一行的错位要注意:仓库还在提交(2026-08-11),但 PyPI 最新版停在 2025-10-27 的 0.0.30,也就是十个月没发版,且始终没走出 0.0.x。它作为 LangGraph 生态里的记忆原语可用,但不适合当成独立的记忆基础设施依赖。
三、部署重量:要拖多少外部服务
这是横评里最有决策价值的一维 —— 它决定了 POC 阶段你要花半天还是三天。
pip install 之后直接能跑;ReMe 和 EverOS 更彻底 —— 记忆就是一堆本地 Markdown。第四档的成本高一个量级,但它买到的是别的档次给不了的东西:多个 Agent、多个用户共用同一份经验,且能按团队和角色控制谁看得到什么。3.1 存储依赖实读
| 项目 | 必选依赖 | 可选后端 |
|---|---|---|
| mem0 | qdrant-client、sqlalchemy(history 表)、一个 LLM、一个嵌入模型 | 26 个向量后端:pgvector、Milvus、Elasticsearch、Redis、Valkey、OpenSearch、Weaviate、Chroma、FAISS、MongoDB、Cassandra、S3 Vectors 等 |
| graphiti | neo4j>=5.26.0(写死在主依赖里)、openai | FalkorDB、Neptune、falkordblite(Python ≥3.12 的嵌入式方案);Kuzu 那条 extra 已注明上游无人维护、将被移除 |
| cognee | sqlalchemy+aiosqlite、lancedb、内嵌 kuzu、litellm、fastapi | Neo4j、Neptune、Postgres、Turso |
| LangMem | LangGraph 的 BaseStore | InMemoryStore(重启即丢)、AsyncPostgresStore(生产) |
| letta-code | git + 一个 memFS 服务端 | 默认指向 api.letta.com,可用 LETTA_MEMFS_BASE_URL 换成自建 |
| TencentDB Agent Memory | 四个服务(MemoryCore / MemoryKnowledge / MemoryPanel / MemoryProxy)+ 数据库 | 仓库带 deploy/ 与 Docker 编排,可整套自建 |
| ReMe | 无外部服务,记忆就是本地 Markdown | 需要时接向量后端 |
| OpenViking | 独立 HTTP 服务,仓库自带 docker-compose.yml 与 helm chart | —(注意许可证,见 2.1) |
| honcho | Postgres | —(注意许可证,见 2.1) |
LangMem 的 InMemoryStore 那一行是踩坑高发处:官方 README 的快速开始用的就是它,重启进程记忆全丢。上生产必须换成 AsyncPostgresStore。
四、能力矩阵
| 能力 | mem0 | graphiti | cognee | 腾讯 | ReMe | letta-code | memory 工具 |
|---|---|---|---|---|---|---|---|
| 抽取式写入 | ✅ | ✅ | ✅ | ✅ 异步分层 | ✅ | 模型自管 | 模型自管 |
| 双时间轴(03 篇) | ❌ | ✅ 四字段 | 部分 | ❌ | ❌ | ❌ | ❌ |
| 作废而非删除 | ❌ 纯追加 | ✅ 边失效 | 部分 | 分层覆盖 | 文件改写 | git 历史 | ❌ |
| 图 / 多跳检索 | 仅托管版 | ✅ | ✅ | ✅ CodeGraph | ❌ | ❌ | ❌ |
| 混合检索(向量+BM25) | 有 reranker 模块 | ✅ 三路 + 五种重排 | ✅ | ✅ BM25+向量+RRF | 向量为主 | ❌ | ❌ |
| 多租户过滤 | ✅ 三维 filters | ✅ group_id 分区 | ✅ | ✅ 团队/用户/Agent 三级 ACL | 目录隔离 | 一 agent 一仓库 | 目录隔离 |
| 强制注入某条 | 自己实现 |